package com.efrei.schoolmanager.views;

import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JWindow;

public class SplashScreen extends JWindow {
	private static final long serialVersionUID = -7381216331070215078L;

	// Instance unique de la classe
	private static SplashScreen instance;

	/**
	 * Constructeur privé : evite de creer une nouvelle instance
	 * 
	 * @param imagePath
	 *            Chemin relatif de l'image du splash screen
	 */
	private SplashScreen(String imagePath) {
		super();
		Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
		if (imagePath != null && !imagePath.equals("")) {
			// Recuperer l'image
			ImageIcon img = new ImageIcon(imagePath);
			int imgHeight = img.getIconHeight();
			int imgWidth = img.getIconWidth();
			int imgX = (screenDimension.width - imgWidth) / 2;
			int imgY = (screenDimension.height - imgHeight) / 2;
			// Label d'affichage de l'image
			getContentPane().add(new JLabel(img));
			setLocation(imgX, imgY);
		} else {
			// Placement au milieu de l'ecran
			setLocation(screenDimension.width / 2, screenDimension.height / 2);
		}
		pack();
		setVisible(true);
	}

	/**
	 * Splash screen avec une duree infinie
	 * 
	 * @param imagePath
	 *            Chemin relatif de l'image du splash screen
	 * @return
	 */
	public static SplashScreen getInstance(String imagePath) {
		// Si l'instance n'existe pas deja, on la crée
		if (instance == null) {
			instance = new SplashScreen(imagePath);
		}
		return instance;
	}

	/**
	 * Ferme le spash screen
	 * 
	 */
	public void end() {
		setVisible(false);
		dispose();
	}

}